package in.lib.loader; import android.annotation.SuppressLint; import android.os.AsyncTask; import in.data.TSerializable; import in.lib.manager.CacheManager; import lombok.Setter; @SuppressLint("NewApi") @SuppressWarnings("unchecked") public class Loader<T extends TSerializable> extends AsyncTask<String, Void, T> { @Setter private OnFileLoadedListener<T> onFileLoadedListener; private long fileAge = 0L; private Class<T> instance; public interface OnFileLoadedListener<T> { public void onFileLoaded(T data, long age); } public void execute(String filename, Class<T> instance) { this.instance = instance; executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, filename); } @Override public T doInBackground(String... params) { try { fileAge = CacheManager.getInstance().getFileAge(params[0]); T stream = CacheManager.getInstance().readFile(params[0], instance); return stream; } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(T result) { super.onPostExecute(result); if (onFileLoadedListener != null) { onFileLoadedListener.onFileLoaded(result, fileAge); } } }